package cn.truistic.enmicromsg.common.util

import java.security.MessageDigest

/**
 * MD5工具
 */
object MD5Util {

//    /**
//     * http://stackoverflow.com/questions/3934331/android-how-to-encrypt-a-string
//     *
//     * @param s
//     * @return
//     */
//    fun md5(s: String): String {
//        try {
//            // Create MD5 Hash
//            val digest = java.security.MessageDigest.getInstance("MD5")
//            digest.update(s.toByteArray())
//            val messageDigest = digest.digest()
//
//            // Create Hex String
//            val hexString = StringBuffer()
//            for (i in messageDigest.indices)
//                hexString.append(Integer.toHexString(0xFF and messageDigest[i]))
//            return hexString.toString()
//
//        } catch (e: NoSuchAlgorithmException) {
//            e.printStackTrace()
//        }
//
//        return ""
//    }


    fun md5(str: String): String {
        var messageDigest: MessageDigest? = null
        try {
            messageDigest = MessageDigest.getInstance("MD5")
            messageDigest!!.reset()
            messageDigest.update(str.toByteArray(charset("UTF-8")))
        } catch (e: Exception) {

        }
        val byteArray = messageDigest!!.digest()
        val md5StrBuff = StringBuffer()
        for (i in byteArray.indices) {
            if (Integer.toHexString(0xFF and byteArray[i].toInt()).length == 1)
                md5StrBuff.append("0").append(
                        Integer.toHexString(0xFF and byteArray[i].toInt()))
            else
                md5StrBuff.append(Integer.toHexString(0xFF and byteArray[i].toInt()))
        }
        return md5StrBuff.toString()
    }


}
